home *** CD-ROM | disk | FTP | other *** search
-
-
-
- GPROF(1) GPROF(1)
-
-
- NNAAMMEE
- gprof - display call graph profile data
-
- SSYYNNOOPPSSIISS
- ggpprrooff [[ --aabbccsszz ]] [[ --ee||--EE _n_a_m_e ]] [[ --ff||--FF _n_a_m_e ]] [[ --kk _f_r_o_m_-
- _n_a_m_e _t_o_n_a_m_e ]] [[ _o_b_j_f_i_l_e [[ _g_m_o_n_._o_u_t ]] ]]
-
- DDEESSCCRRIIPPTTIIOONN
- ggpprrooff produces an execution profile of C, Pascal, or For-
- tran77 programs. The effect of called routines is incor-
- porated in the profile of each caller. The profile data
- is taken from the call graph profile file (`gmon.out'
- default) which is created by programs that are compiled
- with the --ppgg option of cccc(11),, ppcc(11),, and ff7777(11).. The --ppgg
- option also links in versions of the library routines that
- are compiled for profiling. GGpprrooff reads the given object
- file (the default is `a.out') and establishes the relation
- between its symbol table and the call graph profile from
- `gmon.out'. If more than one profile file is specified,
- the ggpprrooff output shows the sum of the profile information
- in the given profile files.
-
- GGpprrooff calculates the amount of time spent in each routine.
- Next, these times are propagated along the edges of the
- call graph. Cycles are discovered, and calls into a cycle
- are made to share the time of the cycle. The first list-
- ing shows the functions sorted according to the time they
- represent including the time of their call graph descen-
- dents. Below each function entry is shown its (direct)
- call graph children, and how their times are propagated to
- this function. A similar display above the function shows
- how this function's time and the time of its descendents
- is propagated to its (direct) call graph parents.
-
- Cycles are also shown, with an entry for the cycle as a
- whole and a listing of the members of the cycle and their
- contributions to the time and call counts of the cycle.
-
- Second, a flat profile is given, similar to that provided
- by pprrooff(11).. This listing gives the total execution times,
- the call counts, the time in milleseconds the call spent
- in the routine itself, and the time in milleseconds the
- call spent in the routine itself including its descen-
- dents.
-
- Finally, an index of the function names is provided.
-
- OOPPTTIIOONNSS
- The following options are available:
-
- --aa suppresses the printing of statically declared
- functions. If this option is given, all relevant
- information about the static function (e.g., time
- samples, calls to other functions, calls from other
-
-
-
- January 29, 1993 1
-
-
-
-
-
- GPROF(1) GPROF(1)
-
-
- functions) belongs to the function loaded just
- before the static function in the `objfile' file.
-
- --bb suppresses the printing of a description of each
- field in the profile.
-
- --cc the static call graph of the program is discovered
- by a heuristic that examines the text space of the
- object file. Static-only parents or children are
- shown with call counts of 0.
-
- --ee _n_a_m_e
- suppresses the printing of the graph profile entry
- for routine _n_a_m_e and all its descendants (unless
- they have other ancestors that aren't suppressed).
- More than one --ee option may be given. Only one
- _n_a_m_e may be given with each --ee option.
-
- --EE _n_a_m_e
- suppresses the printing of the graph profile entry
- for routine _n_a_m_e (and its descendants) as --ee ,,
- above, and also excludes the time spent in _n_a_m_e
- (and its descendants) from the total and percentage
- time computations. (For example, --EE _m_c_o_u_n_t --EE
- _m_c_l_e_a_n_u_p is the default.)
-
- --ff _n_a_m_e
- prints the graph profile entry of only the speci-
- fied routine _n_a_m_e and its descendants. More than
- one --ff option may be given. Only one _n_a_m_e may be
- given with each --ff option.
-
- --FF _n_a_m_e
- prints the graph profile entry of only the routine
- _n_a_m_e and its descendants (as --ff ,, above) and also
- uses only the times of the printed routines in
- total time and percentage computations. More than
- one --FF option may be given. Only one _n_a_m_e may be
- given with each --FF option. The --FF option overrides
- the --EE option.
-
- --kk _f_r_o_m_n_a_m_e _t_o_n_a_m_e
- will delete any arcs from routine _f_r_o_m_n_a_m_e to rou-
- tine _t_o_n_a_m_e. This can be used to break undesired
- cycles. More than one --kk option may be given.
- Only one pair of routine names may be given with
- each --kk option.
-
- --ss a profile file `gmon.sum' is produced that repre-
- sents the sum of the profile information in all the
- specified profile files. This summary profile file
- may be given to later executions of gprof (probably
- also with a --ss) to accumulate profile data across
- several runs of an `objfile' file.
-
-
-
- January 29, 1993 2
-
-
-
-
-
- GPROF(1) GPROF(1)
-
-
- --vv prints the version number for gprof, and then
- exits.
-
- --zz displays routines that have zero usage (as shown by
- call counts and accumulated time). This is useful
- with the --cc option for discovering which routines
- were never called.
-
-
- FFIILLEESS
- a.out the namelist and text space.
- gmon.out dynamic call graph and profile.
- gmon.sum summarized dynamic call graph and profile.
-
- SSEEEE AALLSSOO
- mmoonniittoorr(33),, pprrooffiill(22),, cccc(11),, pprrooff(11)
-
- ``An Execution Profiler for Modular Programs'', by S. Gra-
- ham, P. Kessler, M. McKusick; _S_o_f_t_w_a_r_e _- _P_r_a_c_t_i_c_e _a_n_d
- _E_x_p_e_r_i_e_n_c_e_, Vol. 13, pp. 671-685, 1983.
-
- ``gprof: A Call Graph Execution Profiler'', by S. Graham,
- P. Kessler, M. McKusick; _P_r_o_c_e_e_d_i_n_g_s _o_f _t_h_e _S_I_G_P_L_A_N _'_8_2
- _S_y_m_p_o_s_i_u_m _o_n _C_o_m_p_i_l_e_r _C_o_n_s_t_r_u_c_t_i_o_n_, SIGPLAN Notices, Vol.
- 17, No 6, pp. 120-126, June 1982.
-
- HHIISSTTOORRYY
- GGpprrooff appeared in 4.2 BSD.
-
- BBUUGGSS
- The granularity of the sampling is shown, but remains sta-
- tistical at best. We assume that the time for each execu-
- tion of a function can be expressed by the total time for
- the function divided by the number of times the function
- is called. Thus the time propagated along the call graph
- arcs to the function's parents is directly proportional to
- the number of times that arc is traversed.
-
- Parents that are not themselves profiled will have the
- time of their profiled children propagated to them, but
- they will appear to be spontaneously invoked in the call
- graph listing, and will not have their time propagated
- further. Similarly, signal catchers, even though pro-
- filed, will appear to be spontaneous (although for more
- obscure reasons). Any profiled children of signal catch-
- ers should have their times propagated properly, unless
- the signal catcher was invoked during the execution of the
- profiling routine, in which case all is lost.
-
- The profiled program must call eexxiitt(22) or return normally
- for the profiling information to be saved in the
- `gmon.out' file.
-
-
-
-
-
- January 29, 1993 3
-
-
-